This section is intended to provide a background or context to the invention disclosed below. The description herein may include concepts that could be pursued, but are not necessarily ones that have been previously conceived, implemented or described. Therefore, unless otherwise explicitly indicated herein, what is described in this section is not prior art to the description in this application and is not admitted to be prior art by inclusion in this section.
Many network applications require unique identifiers for different network entities. One such unique identifier is the media access control (MAC) address. A MAC address uniquely identifies any network-enabled device. This is true because any network adapter, such as a network interface card, is assigned a unique MAC address. Thus, even network-enabled devices with multiple network adapters may be uniquely identified using one or more of the MAC addresses of the network adapters. However, most communication end points are identified as Internet protocol (IP) addresses by user-level applications, which typically use socket application programmer interfaces (APIs) provided by an operating system. However, IP addresses are not unique identifiers and can change with time. On the other hand, a MAC address is a unique and static identifier for a network adapter, and is assigned by the vendor of the adapter. The key problem here is to identify a network entity with its MAC address.
Inferring the MAC address of any network entity requires inspection of network packets to map the IP address known to user-level applications to the MAC address of the network entity. Apart from being very resource intensive, this solution will not work in encrypted networks, where the data payload including the IP header (containing an IP address of the network entity) is encrypted and not available for inspection. Hence, determining a unique network identifier of a network entity is difficult by just using packet inspection. Other mechanisms might involve querying the network entity for this information, which will in-turn require the application to acquire suitable permissions on the network entity. The application may not be able to acquire the permissions.